package com.wms.mapper;

import com.wms.dto.LocationDTO;
import com.wms.dto.TaskDetailDTO;
import com.wms.dto.WarehouseDTO;
import com.wms.entity.StockTakingTaskDetailGroup;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ReviewAdjustmentsDetailGroupMapper {
    /**
     * 根据任务编码查询审核调整单详情(分组)
     * @param code
     * @return
     */
    StockTakingTaskDetailGroup queryReviewAdjustmentsDetailGroup(String code);
    /**
     * 查询该任务下的所有库区
     * @param taskId
     * @return
     */

    List<WarehouseDTO> queryWarehouse(@Param("taskId") Integer taskId);

    /**
     * 查询该库区下的所有货位
     * @param taskId
     * @param warehouseId
     * @return
     */

    List<LocationDTO> queryLocation(@Param("taskId") Integer taskId, @Param("warehouseId") Integer warehouseId);

    /**
     * 查询该货位下的所有物料
     * @param taskId
     * @param locationId
     * @return
     */

    List<TaskDetailDTO> queryTaskDetail(@Param("taskId") Integer taskId, @Param("locationId") Integer locationId);

    /**
     * 更新审核状态为完成调整(对应的status改为已完成盘点)
     * @param taskCode
     * @param auditOpinion
     * @param auditUserId
     * @return
     */
    int updateTaskAuditStatusByFinishReview(@Param("taskCode")String taskCode,@Param("auditOpinion") String auditOpinion,@Param("auditUserId")Integer auditUserId);

    /**
     * 打回重盘(对应的status改为已作废)
     * @return
     * @param taskCode
     * @param auditOpinion
     * @param userId
     */
    int updateTaskAuditStatusByNoFinishReview(@Param("taskCode")String taskCode,@Param("auditOpinion") String auditOpinion,@Param("userId")Integer userId);

    /**
     * 根据任务编码查询盘点人
     * @param code
     * @return
     */
    Integer queryUserIdByTaskCode(String code);
    
    /**
     * 更新原任务的审核意见
     * @param taskId
     * @param auditOpinion
     * @return
     */
    int updateTaskAuditOpinion(@Param("taskId") Integer taskId, @Param("auditOpinion") String auditOpinion);

    /**
     * 根据任务编码查询审核人
     * @param code
     * @return
     */
    Integer queryAuditUserIdByTaskCode(String code);

    /**
     * 打回重盘时选择原盘点人则将任务详情中的实际盘点数量、差异数量、有无报损回到初始值
     * @param taskId
     * @return
     */
    int updateRasDetailActualAndDiffAndBreakage(Integer taskId);



}
